<?php
class AlumnosController extends AppController{

    var $name       = 'Alumnos';
    var $appModule  = 'Apafa';
    var $helpers    = array('Html', 'Form', 'Javascript', 'Codigo','GetList', 'TextDate','builtList','adcReporter');
    var $uses       = array('Alumno','Familia','ListaAlumno','TipoDocumento','Paise', 'Departamento', 'Provincia', 'Distrito', 'TipoRelacione', 'Tercero','MiembroFamiliare');

    public function index(){
        $conditions = array();    
        $q = $this->getBusqueda($this->data['ListaAlumno']['busqueda']);
        $this->paginate['limit']=$this->limite;
        if (!empty($q)) {
            $conditions['OR'] = array(
                'ListaAlumno.alumno SIMILAR TO' => '%'.$q.'%',                        
                'ListaAlumno.codigo SIMILAR TO' => '%'.$q.'%'
            );
        }
        $this->paginate['ListaAlumno'] = array(      
            'order'=>array('ListaAlumno.codigo desc'),
            'conditions' => $conditions
        );
        $alumno = $this->paginate('ListaAlumno');

        $this->set('alumno', $alumno);
        $this->set('limite', $this->limite);
    }    

    public function add(){

     if(!empty($this->data)){
         $this->Alumno->begin();
         $this->data['Alumno']['usuario_creacion_id'] = $this->usuarioId();
         $this->data['Alumno']['fecha_creacion'] = 'now()';
         $this->data['Alumno']['empresa_id'] = $this->empresaId();
         $this->data['Alumno']['egresado'] = false;
         $this->data['Alumno']['activo'] = true;      
         $msg = '';
         $flag = true;
         $data = array();
         $context = $this->data;

         if(empty($context['Familia']['id'])):
            $this->Familia->create();  
            $context['Familia']['activo'] = true; 
            $context['Familia']['categoria_id'] = 1; 
            $context['Familia']['empresa_id'] = $this->empresaId(); 
            $flag = $flag && $this->Familia->save($context['Familia']);
            $context['Familia']['id'] = $this->Familia->id;
            if(!$flag)
               $msg .= 'Error al crear el codigo de la Familia <br />';  
         endif;

         $data['Tercero'][0] = array(
                                      'id'                  => 0,  
                                      'empresa_id'          => $this->empresaId(),
                                      'centro_dist_id'      => $this->cemtroDistId(),
                                      'apellido_paterno'    => $context['Alumno']['apellido_paterno'],
                                      'apellido_materno'    => $context['Alumno']['apellido_materno'],
                                      'nombres'             => $context['Alumno']['nombres'],
                                      'tipo_documento_id'   => $context['Alumno']['tipo_documento_id'],
                                      'numero_documento'    => $context['Alumno']['numero_documento'],
                                      'direccion'           => $context['Alumno']['direccion'],
                                      'telefono1'           => '',
                                      'email'               => $context['Alumno']['email'],
                                      'fecha_nacimiento'    => $context['Alumno']['fecha_nacimiento'],
                                      'sexo'                => true,
                                      'ocupacion'           => 'ESTUDIANTE',
                                      'activo'              => true,
                                      'razon_social'        => $context['Alumno']['apellido_paterno'].' '.$context['Alumno']['apellido_materno'].', '.$context['Alumno']['nombres']                               
                                    );
          $data['Tercero'][1] = array(
                                      'id'                  => $context['Padre']['id'], 
                                      'empresa_id'          => $this->empresaId(),
                                      'centro_dist_id'      => $this->cemtroDistId(),
                                      'apellido_paterno'    => $context['Padre']['apellido_paterno'],
                                      'apellido_materno'    => $context['Padre']['apellido_materno'],
                                      'nombres'             => $context['Padre']['nombres'],
                                      'tipo_documento_id'   => $context['Padre']['tipo_documento_id'],
                                      'numero_documento'    => $context['Padre']['numero_documento'],
                                      'direccion'           => $context['Padre']['direccion'],
                                      'telefono1'           => '',
                                      //'email'               => $context['Padre']['email'],
                                      'fecha_nacimiento'    => $context['Padre']['fecha_nacimiento'],
                                      'sexo'                => true,
                                      'ocupacion'           => $context['Padre']['ocupacion'],
                                      'activo'              => true,
                                      'razon_social'        => $context['Padre']['apellido_paterno'].' '.$context['Padre']['apellido_materno'].', '.$context['Padre']['nombres']                               
                                    );
          $data['Tercero'][2] = array(
                                      'id'                  => $context['Madre']['id'],   
                                      'empresa_id'          => $this->empresaId(),
                                      'centro_dist_id'      => $this->cemtroDistId(),
                                      'apellido_paterno'    => $context['Madre']['apellido_paterno'],
                                      'apellido_materno'    => $context['Madre']['apellido_materno'],
                                      'nombres'             => $context['Madre']['nombres'],
                                      'tipo_documento_id'   => $context['Madre']['tipo_documento_id'],
                                      'numero_documento'    => $context['Madre']['numero_documento'],
                                      'direccion'           => $context['Madre']['direccion'],
                                      'telefono1'           => '',
                                      //'email'               => $context['Madre']['email'],
                                      'fecha_nacimiento'    => $context['Madre']['fecha_nacimiento'],
                                      'sexo'                => false,
                                      'ocupacion'           => $context['Padre']['ocupacion'],
                                      'activo'              => true,
                                      'razon_social'        => $context['Madre']['apellido_paterno'].' '.$context['Madre']['apellido_materno'].', '.$context['Madre']['nombres']                               
                                    );

         $data['Alumno'] = array(
                                'id'            => 0,
                                'empresa_id'    => $this->empresaId(),
                                'codigo'        => $context['Alumno']['codigo'],
                                'grado_id'      => $context['Alumno']['grado_id'],
                                'seccion'       => $context['Alumno']['seccion'],
                                'egresado'      => false,
                                'anio_academico'=> $this->ejercicioId(),
                                'activo'        => true,
                                'nivel_id'      => $context['Alumno']['nivel_id'],
                                'fecha_ingreso' => $context['Alumno']['fecha_ingreso'],
                                'familia_id'    => $context['Familia']['id'] ); 


         $data['MiembroFamiliare'][1] = array(
                                               'id'                 => $context['Padre']['id'],
                                               'empresa_id'         => $this->empresaId(),
                                               'familia_id'         => $context['Familia']['id'],
                                               'correo1'            => '',
                                               'centro_trabajo'     => $context['Padre']['centro_trabajo'],
                                               'tipo_relacion_id'   => $context['Padre']['tipo_relacion_id'],
                                               'profesion'          => $context['Padre']['profesion'],
                                               'ocupacion'          => $context['Padre']['ocupacion'],
                                               'es_titular'         => $context['Padre']['es_titular'],
                                               'telefono_celular'   => $context['Padre']['telefono_celular'],
                                               'fecha_nacimiento'   => $context['Padre']['fecha_nacimiento'],
                                               'pais_id'            => $context['Padre']['pais_id'],
                                               'departamento_id'    => $context['Padre']['departamento_id'],
                                               'provincia_id'       => $context['Padre']['provincia_id'],
                                               'distrito_id'        => $context['Padre']['distrito_id'],
                                               'direccion'          => $context['Padre']['direccion'],
                                               'activo'             => true,
                                               'usuario_creacion_id' => $this->usuarioId(),
                                               'fecha_creacion'      => 'now()',
                                             );

         $data['MiembroFamiliare'][2] = array(
                                               'id'                 => $context['Madre']['id'], 
                                               'empresa_id'         => $this->empresaId(),
                                               'familia_id'         => $context['Familia']['id'],
                                               'correo1'            => '',
                                               'centro_trabajo'     => $context['Madre']['centro_trabajo'],
                                               'tipo_relacion_id'   => $context['Madre']['tipo_relacion_id'],
                                               'profesion'          => $context['Madre']['profesion'],
                                               'ocupacion'          => $context['Madre']['ocupacion'],
                                               'es_titular'         => $context['Madre']['es_titular'],
                                               'telefono_celular'   => $context['Madre']['telefono_celular'],
                                               'fecha_nacimiento'   => $context['Madre']['fecha_nacimiento'],
                                               'pais_id'            => $context['Madre']['pais_id'],
                                               'departamento_id'    => $context['Madre']['departamento_id'],
                                               'provincia_id'       => $context['Madre']['provincia_id'],
                                               'distrito_id'        => $context['Madre']['distrito_id'],
                                               'direccion'          => $context['Madre']['direccion'],
                                               'activo'             => true,
                                               'usuario_creacion_id' => $this->usuarioId(),
                                               'fecha_creacion'      => 'now()' );
         #printDie($this->Tercero->validationErrors);
         # GUARDAMOS LOS TERCEROS 
         foreach($data['Tercero'] as $ky=>&$rows):
                if(empty($rows['id'])):
                   /*if(empty($rows['numero_documento']))
                      continue; */
                   $this->Tercero->create();
                endif;
                $rows['email']= 'abc@gmail.com';
                $flag = $flag && $this->Tercero->save($rows);                
                if($ky == 0){ 
                    # GUARDAMOS AL ALUMNO                 
                    $data['Alumno']['id'] = empty($rows['id']) ? $this->Tercero->id : $rows['id'];
                    $flag = $flag && $this->Alumno->save($data['Alumno']);
                    $context['Familia']['alumno_id'] = $data['Alumno']['id'];
                    $flag = $flag && $this->Familia->save($context['Familia']);
                    $msg .= !$flag ? 'Error al registrar el Alumno <br />' : '';

                }else{
                    # GUARDAMOS MIEMBROS FAMILIARES 
                    $data['MiembroFamiliare'][$ky]['id'] = empty($rows['id']) ? $this->Tercero->id : $rows['id'];                
                    $flag = $flag && $this->MiembroFamiliare->save($data['MiembroFamiliare'][$ky]);
                    $msg .= !$flag ? 'Error al registrar el Alumno <br />' : '';                
                }
                if(!$flag){
                    $msg .= 'Error al registrar en Terceros <br />';
                    break;
                } 
         endforeach;
        //printDie($data);
         if($flag){
               $this->Alumno->commit();    
               $this->Session->setFlash('Se guardo los datos correctamente');
               $this->redirect(array('action' => 'view/'.$data['Alumno']['id']));
         }    
         else{ 
               $this->Alumno->rollback();
               $this->Session->setFlash('Error Atencion :: '.$msg);
         }
     }
     else{
         //$this->data['Alumno']['codigo'] = $this->Alumno->generarCodigo();
         $this->data['Familia']['codigo'] = $this->Familia->generarCodigo();

         $this->set('tipoDocumentos', $this->TipoDocumento->find('list',array(
                            'order' => 'TipoDocumento.id',
                            'fields'=>array('TipoDocumento.id','TipoDocumento.simbolo')
                    )));
         $this->set('paises', $this->Paise->find('list',array(
                            'order' => 'Paise.id',
                            'conditions'=>array('Paise.activo'=>true),
                            'fields'=>array('Paise.id','Paise.descripcion')
                    )));
         $this->set('tipo_relacion', $this->TipoRelacione->find('list',array(
                            'order' => 'TipoRelacione.id',
                            'conditions'=>array('TipoRelacione.activo'=>true),
                            'fields'=>array('TipoRelacione.id','TipoRelacione.descripcion')
                    )));

     }

    }

    public function delete($id=null){

     if(!empty ($id)){

         $data = $this->Alumno->find('first',array('conditions'=> array('Alumno.id' => $id)));

         $this->Alumno->begin();

         if(isset($data)){

             $data['Alumno']['usuario_borrado_id'] = $this->usuarioId();
             $data['Alumno']['fecha_borrado'] = 'now()';
             $data['Alumno']['activo'] = false;

             if($this->Alumno->save($data)){
                    $this->Alumno->commit(); 
                    $this->Session->setFlash('Los datos fueron eliminados satisfactoriamente');
             }
             else {
                    $this->Alumno->rollback();  
                    return false;
             }   
       } 
     }   
        return true;
    }

    public function egresar($id=null, $bahivor = false){    
        if(!empty ($id)){
            $data = $this->Alumno->find('first',array('conditions'=> array('Alumno.id' => $id)));     
            $this->Alumno->begin();     
            if(isset($data)){
                $data['Alumno']['egresado'] = !$data['Alumno']['egresado'];         
                $data['Alumno']['fecha_egreso'] = 'now()';
                if($this->Alumno->save($data)){
                   $this->Alumno->commit();
                }
                else {
                   $this->Alumno->rollback();  
                   return false;
                }   
            } 
        }
        if($bahivor){
            return true;
        } else {
            $this->Session->setFlash(__('La operacion se realizo con exito.', true));	
            $this->redirect(array('action'=>'index'));
        }
        
    }

    public function ajax(){
          if($this->RequestHandler->isAjax()){         
             Configure::write('debug', 0);         
             switch ($this->params['form']['action']){

                case 1:  #DEPARTAMENTO              
                        $item = $this->params['form'];
                        $value = $this->Departamento->find('list', array('conditions'=>array('activo'=>true, 'pais_id'=>$item['pais_id']), 'fields'=>array('id','descripcion')));                    
                      break;

                case 2: #PROVINCIA
                        $item = $this->params['form'];
                        $value = $this->Provincia->find('list', array('conditions'=>array('activo'=>true, 'pais_id'=>$item['pais_id'], 'departamento_id'=>$item['departamento_id']), 
                                                                      'fields'=>array('id','descripcion')));
                      break;

                case 3 : #DISTRITO
                        $item = $this->params['form'];
                        $value = $this->Distrito->find('list', array('conditions'=>array('activo'=>true, 'pais_id'=>$item['pais_id'], 'departamento_id'=>$item['departamento_id'], 'provincia_id'=>$item['provincia_id']), 
                                                                      'fields'=>array('id','descripcion')));  
                      break;

                case 4 : # BUSCAMOS EL ALUMNO
                        $sql = '
                                select                       
                                    tc.apellido_paterno 	"Alumno__apellido_paterno",
                                    tc.apellido_materno 	"Alumno__apellido_materno",
                                    tc.nombres 		"Alumno__nombres",
                                    tc.razon_social 	"Alumno__razon_social",
                                    tc.direccion 		"Alumno__direccion", 
                                    tc.fecha_nacimiento 	"Alumno__fecha_nacimiento",
                                    tc.email 		"Alumno__email",
                                    tc.numero_documento 	"Alumno__numero_documento",
                                    tc.empresa_id 		"Alumno__empresa_id"                           
                                 from maestros.terceros tc
                                 where 
                                 tc.id not in (
                                                select 
                                                    a.id
                                                from apafa.alumnos a
                                                where 
                                                a.activo = true 
                                                and a.egresado = true
                                               )
                                 %s
                               ';
                        $params = $this->params['form'];        
                        $conditions = '';

                        if(!empty($params['q']) && $params['q'] != '%'):
                            $conditions .= ' and tc.tipo_documento_id = '.$params['tipo_documento_id'];
                            $conditions .= ' and tc.numero_documento = \''.$params['q'].'\'';
                        endif;

                        $value = $this->Alumno->query(sprintf($sql,$conditions));       

                        if(count($value)<1):
                            $value[0]['Alumno'] = array(
                                                        'id'=>0,'apellido_paterno'=>'',
                                                        'apellido_materno'=>'', 'nombres'=>'','razon_social'=>'',
                                                        'direccion'=>'','numero_documento'=>$params['q'], 'empresa'=>1,'email'=>'@'
                                                        );
                        endif;

                    break;

                case 5: #BUSCAMOS A LOS MIEMBROS FAMILIARES
                        $sql = '
                                select
                                    mf.id                   "MiembroFamiliar__id",
                                    tc.numero_documento     "MiembroFamiliar__numero_documento",
                                    tc.nombres		"MiembroFamiliar__nombres",
                                    tc.apellido_materno     "MiembroFamiliar__apellido_materno",
                                    tc.apellido_paterno     "MiembroFamiliar__apellido_paterno",
                                    tc.direccion		"MiembroFamiliar__direccion",
                                    mf.fecha_nacimiento     "MiembroFamiliar__fecha_nacimiento",
                                    mf.telefono_celular     "MiembroFamiliar__telefono_celular",
                                    mf.ocupacion		"MiembroFamiliar__ocupacion",
                                    mf.centro_trabajo	"MiembroFamiliar__centro_trabajo",
                                    mf.tipo_relacion_id     "MiembroFamiliar__tipo_relacion_id",
                                    mf.es_titular		"MiembroFamiliar__es_titular",
                                    mf.pais_id		"MiembroFamiliar__pais_id",
                                    mf.departamento_id      "MiembroFamiliar__departamento_id",
                                    mf.provincia_id		"MiembroFamiliar__provincia_id",
                                    mf.distrito_id		"MiembroFamiliar__distrito_id",
                                    tc.razon_social		"MiembroFamiliar__razon_social",
                                    fa.codigo		"Familia__codigo",
                                    fa.id			"Familia__id"
                                from apafa.miembro_familiares mf 
                                left join maestros.terceros tc on tc.id = mf.id
                                left join apafa.familias fa on fa.id = mf.familia_id
                                where 
                                    mf.activo    
                                %s
                                order by 
                                fa.codigo
                               ';
                        $params = $this->params['form'];        
                        $conditions = '';

                        if(!empty($params['q']) && $params['q'] != '%'):
                            $conditions .= ' and tc.tipo_documento_id = '.$params['tipo_documento_id'];
                            $conditions .= ' and tc.numero_documento = \''.$params['q'].'\'';                    
                        endif;

                        $conditions .= ' and tc.sexo = '.$params['sexo'];

                        $value = $this->Alumno->query(sprintf($sql,$conditions));       

                        if(count($value)<1):
                            $value[0]['MiembroFamiliar'] = array(
                                                        'id'=>0, 'codigo'=>'','apellido_paterno'=>'',
                                                        'apellido_materno'=>'', 'nombres'=>'','razon_social'=>'',
                                                        'direccion'=>'', 'fecha_nacimiento'=>'','fecha_ingreso'=>'',
                                                        'telefono_celular'=>'', 'ocupacion'=>'','centro_trabajo'=>'',
                                                        'tipo_relacion_id'=>1, 'es_titular'=>false,'pais'=>0,
                                                        'departamento_id'=>0, 'provincia_id'=>0,'distrito_id'=>0,
                                                        'numero_documento'=>$params['q']
                                                        );
                            $value[0]['Familia'] = array(
                                                        'id'=>0, 'codigo'=>''
                                                        );
                        endif;

                        break;


            }

            if(!empty($value))
            $this->_ajaxify ($value);             
         }      
        }

    public function process(){ 

         $flag  = true;	
            foreach($this->data as $item){
                if ($item['id']!='0'){
                        if(isset($this->params['form']['delete'])){ // eliminar
                           $flag = $flag && $this->delete($item['ListaAlumno']['id']);
                        }				
                        if(isset($this->params['form']['btnEgresado'])){ // eliminar                       
                           $flag = $flag && $this->egresar($item['ListaAlumno']['id']);
                        }				
                }			
            }
            if (!$flag){			
                    $this->Session->setFlash(__("La operacion no ah sido realizada.", true));						
            } else {			
                    $this->Session->setFlash(__("La operacion ah sido realizada con exito.", true));		
            }
            $this->redirect(array('action'=>'index'));
    }

    public function edit($id = null){
      if(empty($id) && empty($this->data) )
             $this->redirect(array('action' => 'index'));    

      if(!empty($this->data)){
         $this->Alumno->begin();
         $flag = true;
         $this->data['Alumno']['usuario_modificacion_id'] = $this->usuarioId();
         $this->data['Alumno']['fecha_modificacion'] = 'now()';
         $this->data['Alumno']['activo'] = true;
		 $this->data['Alumno']['empresa_id'] = $this->empresaId();
		 $this->data['Alumno']['egresado'] = false;
         $msg = '';     
         $data = array();
         $context = $this->data;

         if(empty($context['Familia']['id'])):
            $this->Familia->create();  
            $context['Familia']['activo'] = true; 
            $flag = $flag && $this->Familia->save($context['Familia']);
            $context['Familia']['id'] = $this->Familia->id;
            if(!$flag)
               $msg .= 'Error al crear el código de la Familia <br />';  
         endif;

          $sql = '
                select
                    a.id			"Alumno__id", 
                    a.codigo			"Alumno__codigo",
                    tc.tipo_documento_id	"Alumno__tipo_documento_id",
                    tc.apellido_paterno		"Alumno__apellido_paterno",
                    tc.apellido_materno		"Alumno__apellido_materno",
                    tc.nombres			"Alumno__nombres",
                    tc.direccion		"Alumno__direccion",
                    tc.numero_documento		"Alumno__numero_documento",
                    a.nivel_id			"Alumno__nivel_id",
                    a.grado_id			"Alumno__grado_id",
                    a.seccion			"Alumno__seccion",
                    a.fecha_ingreso		"Alumno__fecha_ingreso",
                    tc.fecha_nacimiento		"Alumno__fecha_nacimiento",
                    fa.id			"Familia__id",
                    fa.codigo			"Familia__codigo",
                    t.tipo_documento_id		"MiembroFamiliar__tipo_documento_id",
                    t.numero_documento		"MiembroFamiliar__numero_documento",
                    t.nombres			"MiembroFamiliar__nombres",
                    t.apellido_paterno		"MiembroFamiliar__apellido_paterno",
                    t.apellido_materno		"MiembroFamiliar__apellido_materno",
                    t.direccion			"MiembroFamiliar__direccion",
                    t.sexo			"MiembroFamiliar__sexo",
                    mf.id			"MiembroFamiliar__id",
                    mf.fecha_nacimiento		"MiembroFamiliar__fecha_nacimiento",
                    mf.telefono_celular		"MiembroFamiliar__telefono_celular",
                    mf.profesion		"MiembroFamiliar__profesion",
                    mf.ocupacion		"MiembroFamiliar__ocupacion",
                    mf.centro_trabajo		"MiembroFamiliar__centro_trabajo",
                    mf.tipo_relacion_id		"MiembroFamiliar__tipo_relacion_id",
                    mf.es_titular		"MiembroFamiliar__es_titular",
                    mf.pais_id			"MiembroFamiliar__pais_id",
                    mf.departamento_id		"MiembroFamiliar__departamento_id",
                    mf.provincia_id		"MiembroFamiliar__provincia_id",
                    mf.distrito_id		"MiembroFamiliar__distrito_id"
                 from apafa.alumnos a 
                 left join maestros.terceros tc on tc.id = a.id
                 left join apafa.miembro_familiares mf on mf.familia_id = a.familia_id
                 left join apafa.familias fa on fa.id = a.familia_id
                 left join maestros.terceros t on t.id = mf.id
                 where
                     a.activo
                 and a.id = %d ';

             $data_bckp = array();
             $data_ = $this->Alumno->query(sprintf($sql,$this->data['Alumno']['id']));

             foreach($data_ as $rows):          
                 if($rows['MiembroFamiliar']['sexo'])
                    $data_bckp['Padre'] = $rows['MiembroFamiliar'];             
                 else    
                    $data_bckp['Madre'] = $rows['MiembroFamiliar'];
             endforeach;


          $data['Tercero'][0] = array(
                                      'id'                  => $context['Alumno']['id'],  
                                      'empresa_id'          => $this->empresaId(),
                                      'apellido_paterno'    => $context['Alumno']['apellido_paterno'],
                                      'apellido_materno'    => $context['Alumno']['apellido_materno'],
                                      'nombres'             => $context['Alumno']['nombres'],
                                      'tipo_documento_id'   => $context['Alumno']['tipo_documento_id'],
                                      'numero_documento'    => $context['Alumno']['numero_documento'],
                                      'direccion'           => $context['Alumno']['direccion'],
                                      'telefono1'           => '',
                                      //'email'               => $context['Alumno']['email'],
                                      'fecha_nacimiento'    => $context['Alumno']['fecha_nacimiento'],
                                      'sexo'                => true,
                                      'ocupacion'           => 'ESTUDIANTE',
                                      'activo'              => true,
                                      'razon_social'        => $context['Alumno']['apellido_paterno'].' '.$context['Alumno']['apellido_materno'].', '.$context['Alumno']['nombres']                               
                                    );
          $data['Tercero'][1] = array(
                                      'id'                  => $context['Padre']['id'], 
                                      'empresa_id'          => $this->empresaId(),
                                      'apellido_paterno'    => $context['Padre']['apellido_paterno'],
                                      'apellido_materno'    => $context['Padre']['apellido_materno'],
                                      'nombres'             => $context['Padre']['nombres'],
                                      'tipo_documento_id'   => $context['Padre']['tipo_documento_id'],
                                      'numero_documento'    => $context['Padre']['numero_documento'],
                                      'direccion'           => $context['Padre']['direccion'],
                                      'telefono1'           => '',
                                      //'email'               => $context['Padre']['email'],
                                      'fecha_nacimiento'    => $context['Padre']['fecha_nacimiento'],
                                      'sexo'                => true,
                                      'ocupacion'           => $context['Padre']['ocupacion'],
                                      'activo'              => true,
                                      'razon_social'        => $context['Padre']['apellido_paterno'].' '.$context['Padre']['apellido_materno'].', '.$context['Padre']['nombres']                               
                                    );
          $data['Tercero'][2] = array(
                                      'id'                  => $context['Madre']['id'],   
                                      'empresa_id'          => $this->empresaId(),
                                      'apellido_paterno'    => $context['Madre']['apellido_paterno'],
                                      'apellido_materno'    => $context['Madre']['apellido_materno'],
                                      'nombres'             => $context['Madre']['nombres'],
                                      'tipo_documento_id'   => $context['Madre']['tipo_documento_id'],
                                      'numero_documento'    => $context['Madre']['numero_documento'],
                                      'direccion'           => $context['Madre']['direccion'],
                                      'telefono1'           => '',
                                      //'email'               => $context['Madre']['email'],
                                      'fecha_nacimiento'    => $context['Madre']['fecha_nacimiento'],
                                      'sexo'                => false,
                                      'ocupacion'           => $context['Padre']['ocupacion'],
                                      'activo'              => true,
                                      'razon_social'        => $context['Madre']['apellido_paterno'].' '.$context['Madre']['apellido_materno'].', '.$context['Madre']['nombres']                               
                                    );

         $data['Alumno'] = array(
                                'id'            => $context['Alumno']['id'],
                                'empresa_id'    => $this->empresaId(),
                                'codigo'        => $context['Alumno']['codigo'],
                                'grado_id'      => $context['Alumno']['grado_id'],
                                'seccion'       => $context['Alumno']['seccion'],
                                'activo'        => true,
								'egresado'      => $context['Alumno']['egresado'],
                                'nivel_id'      => $context['Alumno']['nivel_id'],
                                'fecha_ingreso' => $context['Alumno']['fecha_ingreso'],                            
                                'familia_id'    => $context['Familia']['id']
                                ); 


         $data['MiembroFamiliare'][1] = array(
                                               'id'                 => $context['Padre']['id'],
                                               'empresa_id'          => $this->empresaId(),
                                               'familia_id'         => $context['Familia']['id'],
                                               'correo1'            => '',
                                               'centro_trabajo'     => $context['Padre']['centro_trabajo'],
                                               'tipo_relacion_id'   => $context['Padre']['tipo_relacion_id'],
                                               'profesion'          => $context['Padre']['profesion'],
                                               'ocupacion'          => $context['Padre']['ocupacion'],
                                               'es_titular'         => $context['Padre']['es_titular'],
                                               'telefono_celular'   => $context['Padre']['telefono_celular'],
                                               'fecha_nacimiento'   => $context['Padre']['fecha_nacimiento'],
                                               'pais_id'            => $context['Padre']['pais_id'],
                                               'departamento_id'    => $context['Padre']['departamento_id'],
                                               'provincia_id'       => $context['Padre']['provincia_id'],
                                               'distrito_id'        => $context['Padre']['distrito_id'],
                                               'direccion'          => $context['Padre']['direccion'],
                                               'activo'             => true,
                                               'usuario_modificacion_id' => $this->usuarioId(),
                                               'fecha_modificacion' => 'now()',
                                             );

         $data['MiembroFamiliare'][2] = array(
                                               'id'                 => $context['Madre']['id'], 
                                               'empresa_id'          => $this->empresaId(),
                                               'familia_id'         => $context['Familia']['id'],
                                               'correo1'            => '',
                                               'centro_trabajo'     => $context['Madre']['centro_trabajo'],
                                               'tipo_relacion_id'   => $context['Madre']['tipo_relacion_id'],
                                               'profesion'          => $context['Madre']['profesion'],
                                               'ocupacion'          => $context['Madre']['ocupacion'],
                                               'es_titular'         => $context['Madre']['es_titular'],
                                               'telefono_celular'   => $context['Madre']['telefono_celular'],
                                               'fecha_nacimiento'   => $context['Madre']['fecha_nacimiento'],
                                               'pais_id'            => $context['Madre']['pais_id'],
                                               'departamento_id'    => $context['Madre']['departamento_id'],
                                               'provincia_id'       => $context['Madre']['provincia_id'],
                                               'distrito_id'        => $context['Madre']['distrito_id'],
                                               'direccion'          => $context['Madre']['direccion'],
                                               'activo'             => true,
                                               'usuario_modificacion_id' => $this->usuarioId(),
                                               'fecha_modificacion' => 'now()',
                                             );

         # GUARDAMOS LOS TERCEROS 
         foreach($data['Tercero'] as $ky=>$rows){
                if(empty($rows['id'])):           
                   $this->Tercero->create();  
                   $flag = $flag && $this->Tercero->save($rows);
                   if($ky == 0)
                       $data['Alumno']['id'] = $this->Tercero->id;
                   else
                       $data['MiembroFamiliare'][$ky]['id'] = $this->Tercero->id;
                endif;  

                $flag = $flag && $this->Tercero->save($rows);

                if($ky == 0){
                    # GUARDAMOS AL ALUMNO
                    $flag = $flag && $this->Alumno->save($data['Alumno']);
                    $msg .= !$flag ? 'Error al registrar el Alumno <br />' : '';                                                       
                }else{                
                    # DESVINCULAMOS DE LA FAMILIA AL PADRE REEMPLAZADO 
                    if(isset($data_bckp['Padre']))
                    if($data_bckp['Padre']['id'] != $data['MiembroFamiliare'][1]['id']):
                       $this->MiembroFamiliare->updateAll(array('familia_id'=>null), array('id'=>$data_bckp['Padre']['id'])); 
                    endif;
                    # DESVINCULAMOS DE LA FAMILIA A LA PADRE REEMPLAZADO
                    if(isset($data_bckp['Madre']))
                    if($data_bckp['Madre']['id'] != $data['MiembroFamiliare'][2]['id']):
                       $this->MiembroFamiliare->updateAll(array('familia_id'=>null), array('id'=>$data_bckp['Madre']['id'])); 
                    endif;

                    # GUARDAMOS MIEMBROS FAMILIARES               
                    $flag = $flag && $this->MiembroFamiliare->save($data['MiembroFamiliare'][$ky]);
                    $msg .= !$flag ? 'Error al registrar el Alumno <br />' : '';
                }              
                if(!$flag){
                    $msg .= 'Error al registrar en Terceros <br />';
                    break;
                } 
         }

         if($flag){
               $this->Alumno->commit();    
               $this->Session->setFlash('Se edito los datos correctamente.');
               $this->redirect(array('action' => 'view',$data['Alumno']['id'] ));
         }    
         else{ 
               $this->Alumno->rollback();
               $this->Session->setFlash('Atencion Error :: '.$msg);
               $this->redirect(array('action' => 'edit/'.$data['Alumno']['id']));
         } 

      }   

      $sql = '
                select
                    a.id			"Alumno__id", 
                    a.codigo			"Alumno__codigo",
                    tc.apellido_paterno		"Alumno__apellido_paterno",
                    tc.apellido_materno		"Alumno__apellido_materno",
                    tc.nombres			"Alumno__nombres",
                    tc.direccion		"Alumno__direccion",
                    tc.numero_documento		"Alumno__numero_documento",
                    tc.tipo_documento_id	"Alumno__tipo_documento_id",
                    a.nivel_id			"Alumno__nivel_id",
                    a.grado_id			"Alumno__grado_id",
                    a.seccion			"Alumno__seccion",                
                    to_char(a.fecha_ingreso, \'DD/MM/YYYY\')     "Alumno__fecha_ingreso",
                    to_char(tc.fecha_nacimiento, \'DD/MM/YYYY\') "Alumno__fecha_nacimiento",
                    fa.id			"Familia__id",
                    fa.codigo			"Familia__codigo",
                    t.tipo_documento_id		"MiembroFamiliar__tipo_documento_id",
                    t.numero_documento		"MiembroFamiliar__numero_documento",
                    t.nombres			"MiembroFamiliar__nombres",
                    t.apellido_paterno		"MiembroFamiliar__apellido_paterno",
                    t.apellido_materno		"MiembroFamiliar__apellido_materno",
                    t.direccion			"MiembroFamiliar__direccion",
                    t.sexo			"MiembroFamiliar__sexo",
                    mf.id			"MiembroFamiliar__id",               
                    to_char(mf.fecha_nacimiento, \'DD/MM/YYYY\') "MiembroFamiliar__fecha_nacimiento",
                    mf.telefono_celular		"MiembroFamiliar__telefono_celular",
                    mf.profesion		"MiembroFamiliar__profesion",
                    mf.ocupacion		"MiembroFamiliar__ocupacion",
                    mf.centro_trabajo		"MiembroFamiliar__centro_trabajo",
                    mf.tipo_relacion_id		"MiembroFamiliar__tipo_relacion_id",
                    mf.es_titular		"MiembroFamiliar__es_titular",
                    mf.pais_id			"MiembroFamiliar__pais_id",
                    mf.departamento_id		"MiembroFamiliar__departamento_id",
                    mf.provincia_id		"MiembroFamiliar__provincia_id",
                    mf.distrito_id		"MiembroFamiliar__distrito_id"
                 from apafa.alumnos a 
                 left join maestros.terceros tc on tc.id = a.id
                 left join apafa.miembro_familiares mf on mf.familia_id = a.familia_id
                 left join apafa.familias fa on fa.id = a.familia_id
                 left join maestros.terceros t on t.id = mf.id
                 where
                     a.activo
                 and a.id = %d
             ';

             $data = $this->Alumno->query(sprintf($sql,$id));

             foreach($data as $rows):
                 $this->data['Alumno']  = $rows['Alumno'];
                 $this->data['Familia'] = $rows['Familia'];
                 if($rows['MiembroFamiliar']['sexo']){
                    $this->data['Padre'] = $rows['MiembroFamiliar'];
                    $this->set('departamento_padre', $this->Departamento->find('list',array(
                               'order' => 'Departamento.id',
                               'conditions'=>array('Departamento.activo'=>true,'Departamento.pais_id'=>$rows['MiembroFamiliar']['pais_id']),
                               'fields'=>array('Departamento.id','Departamento.descripcion')
                       )));
                    $this->set('provincia_padre', $this->Provincia->find('list',array(
                               'order' => 'Provincia.id',
                               'conditions'=>array('Provincia.activo'=>true,'Provincia.pais_id'=>$rows['MiembroFamiliar']['pais_id'],'Provincia.departamento_id'=>$rows['MiembroFamiliar']['departamento_id']),
                               'fields'=>array('Provincia.id','Provincia.descripcion')
                       )));
                    $this->set('distrito_padre', $this->Distrito->find('list',array(
                               'order' => 'Distrito.id',
                               'conditions'=>array('Distrito.activo'=>true,'Distrito.pais_id'=>$rows['MiembroFamiliar']['pais_id'],'Distrito.departamento_id'=>$rows['MiembroFamiliar']['departamento_id'], 
                                                   'Distrito.provincia_id'=>$rows['MiembroFamiliar']['provincia_id']),
                               'fields'=>array('Distrito.id','Distrito.descripcion')
                       )));
                 }   
                 else{    
                    $this->data['Madre'] = $rows['MiembroFamiliar'];
                    $this->set('departamento_madre', $this->Departamento->find('list',array(
                               'order' => 'Departamento.id',
                               'conditions'=>array('Departamento.activo'=>true,'Departamento.pais_id'=>$rows['MiembroFamiliar']['pais_id']),
                               'fields'=>array('Departamento.id','Departamento.descripcion')
                       )));
                    $this->set('provincia_madre', $this->Provincia->find('list',array(
                               'order' => 'Provincia.id',
                               'conditions'=>array('Provincia.activo'=>true,'Provincia.pais_id'=>$rows['MiembroFamiliar']['pais_id'],'Provincia.departamento_id'=>$rows['MiembroFamiliar']['departamento_id']),
                               'fields'=>array('Provincia.id','Provincia.descripcion')
                       )));
                    $this->set('distrito_madre', $this->Distrito->find('list',array(
                               'order' => 'Distrito.id',
                               'conditions'=>array('Distrito.activo'=>true,'Distrito.pais_id'=>$rows['MiembroFamiliar']['pais_id'],'Distrito.departamento_id'=>$rows['MiembroFamiliar']['departamento_id'], 
                                                   'Distrito.provincia_id'=>$rows['MiembroFamiliar']['provincia_id']),
                               'fields'=>array('Distrito.id','Distrito.descripcion')
                       )));
                 }   
             endforeach;
            // printDie($this->data);
             $this->set('tipoDocumentos', $this->TipoDocumento->find('list',array(
                            'order' => 'TipoDocumento.id',
                            'fields'=>array('TipoDocumento.id','TipoDocumento.simbolo')
                    )));

             $this->set('paises', $this->Paise->find('list',array(
                               'order' => 'Paise.id',
                               'conditions'=>array('Paise.activo'=>true),
                               'fields'=>array('Paise.id','Paise.descripcion')
                       )));



             $this->set('tipo_relacion', $this->TipoRelacione->find('list',array(
                               'order' => 'TipoRelacione.id',
                               'conditions'=>array('TipoRelacione.activo'=>true),
                               'fields'=>array('TipoRelacione.id','TipoRelacione.descripcion')
                       )));

        }

    public function view($id = null){

        $sql = '
                select
                    a.id			"Alumno__id", 
                    a.codigo			"Alumno__codigo",
                    tc.apellido_paterno		"Alumno__apellido_paterno",
                    tc.apellido_materno		"Alumno__apellido_materno",
                    tc.nombres			"Alumno__nombres",
                    tc.direccion		"Alumno__direccion",
                    tc.email			"Alumno__email",
                    tc.numero_documento		"Alumno__numero_documento",
                    td.simbolo                  "Alumno__tipo_documento",
                    a.nivel_id			"Alumno__nivel_id",
                    a.grado_id			"Alumno__grado_id",
                    a.seccion			"Alumno__seccion",                
                    to_char(a.fecha_ingreso, \'DD/MM/YYYY\') "Alumno__fecha_ingreso",
                    to_char(tc.fecha_nacimiento, \'DD/MM/YYYY\') "Alumno__fecha_nacimiento",
                    fa.id			"Familia__id",
                    fa.codigo			"Familia__codigo",      
                    tdc.simbolo                 "MiembroFamiliar__tipo_documento",                
                    t.numero_documento		"MiembroFamiliar__numero_documento",
                    t.nombres			"MiembroFamiliar__nombres",
                    t.apellido_paterno		"MiembroFamiliar__apellido_paterno",
                    t.apellido_materno		"MiembroFamiliar__apellido_materno",
                    t.direccion			"MiembroFamiliar__direccion",
                    t.sexo			"MiembroFamiliar__sexo",
                    mf.id			"MiembroFamiliar__id",               
                    to_char(mf.fecha_nacimiento, \'DD/MM/YYYY\')		"MiembroFamiliar__fecha_nacimiento",
                    mf.telefono_celular		"MiembroFamiliar__telefono_celular",
                    mf.profesion		"MiembroFamiliar__profesion",
                    mf.ocupacion		"MiembroFamiliar__ocupacion",
                    mf.centro_trabajo		"MiembroFamiliar__centro_trabajo",
                    mf.tipo_relacion_id		"MiembroFamiliar__tipo_relacion_id",                
                    mf.es_titular		"MiembroFamiliar__es_titular",
                    p.descripcion		"MiembroFamiliar__pais",
                    dp.descripcion  		"MiembroFamiliar__departamento",
                    pr.descripcion		"MiembroFamiliar__provincia",
                    dst.descripcion		"MiembroFamiliar__distrito"
                 from apafa.alumnos a 
                 left join maestros.terceros tc on tc.id = a.id
                 left join apafa.miembro_familiares mf on mf.familia_id = a.familia_id
                 left join maestros.tipo_documentos td on td.id = tc.tipo_documento_id
                 left join apafa.familias fa on fa.id = a.familia_id
                 left join maestros.terceros t on t.id = mf.id
                 left join maestros.tipo_documentos tdc on tdc.id = t.tipo_documento_id
                 left join maestros.paises p on p.id = mf.pais_id
                 left join maestros.departamentos dp on dp.pais_id = mf.pais_id 
                 left join maestros.provincias pr on pr.pais_id = p.id and pr.departamento_id = dp.id
                 left join maestros.distritos dst on dst.pais_id = p.id and dst.departamento_id = dp.id and dst.provincia_id = pr.id
                 where
                     a.activo and a.id = %d';

             $data = $this->Alumno->query(sprintf($sql,$id));
             
             $sql = 'select  
                        dv.numero_documento as "DocumentoVenta__numero_documento",
                        dv.fecha_emision  as "DocumentoVenta__fecha_emision",
                        dv.glosa as "DocumentoVenta__glosa",
                        dv.cargo as "DocumentoVenta__cargo",
                        dv.abono as "DocumentoVenta__abono"  
                      from facturacion.documento_ventas dv 
                      where 
                          dv.anulado = false and dv.activo
                          and dv.familia_id = '.$data[0]['Familia']['id'].'
                      order by dv.fecha_emision asc';
             $deudas = $this->Alumno->query($sql);
             $documentos = array();
             foreach($deudas as $item){
                 if($item['DocumentoVenta']['cargo'] == $item['DocumentoVenta']['abono']){
                     $documentos['Pendientes'][] = $item;
                 } else {
                     $documentos['Cancelados'][] = $item;
                 }
             }
             
             foreach($data as $rows):
                 $this->data['Alumno']  = $rows['Alumno'];
                 $this->data['Familia'] = $rows['Familia'];
                 if($rows['MiembroFamiliar']['tipo_relacion_id'] == '1')
                    $this->data['Padre'] = $rows['MiembroFamiliar'];               
                 else    
                    $this->data['Madre'] = $rows['MiembroFamiliar'];
             endforeach;
             $this->data['Documentos'] = $documentos;
        }

    public function buscar($q = null){
        if(!empty($this->data['Alumno']['q'])){
                $q = $this->data['Alumno']['q'];
        } elseif (!empty($this->params['url']['q'])){
                $q = $this->params['url']['q'];
        } elseif (!empty($this->params['form']['q'])){
                $q = $this->params['form']['q'];
        }

        if(empty($q)){
                $result = array('Error'=>'No se establecieron los parámetros adecuadamente');
        } else {
                $conditions = array('Alumno.activo' => true);	
                $params = explode('_ID_', $q);			
                if( count($params) == 2){
                        $conditions['Alumno.id'] = $params[1];
                } else {
                        $conditions['OR']['Alumno.codigo iLike']='%'.strtoupper($q).'%';
                        $conditions['OR']['Tercero.razon_social iLike']='%'.strtoupper($q).'%';
                }			

                $fields = array(
                        'Alumno.id',				
                        'Alumno.codigo',                    
                        'Tercero.razon_social');

                $this->Alumno->Behaviors->attach('Containable');
                $result = $this->Alumno->find('all', array(
                        'conditions' => $conditions,
                        'contain'=>array('Tercero.razon_social'),							
                        'fields' => $fields,
                        'order'=>array('Alumno.codigo ASC')));

        }		
        //definiendo valores en caso q sea una petici�n para autocompletado
        if(!empty($this->params['url']['autocomplete']) || !empty($this->params['form']['autocomplete'])){
                $res = array();
                foreach($result as $value){
                        $res[] = array('value'=>'_ID_'.$value['Alumno']['id'], 'display'=>'<span style="color:gray;font-size:.9em">'.$value['Alumno']['codigo'].'</span><div style="float:right;font-size:.8em" title="'.$value['Tercero']['razon_social'].'">'. $this->neat_trim($value['Tercero']['razon_social'], 24) .'</div>');
                }
                $result = $res;
        }

        if ($this->RequestHandler->isAjax()){			
                if(empty($result)){
                        $result = array('error'=>'No se encontraron datos');
                }
                $this->_ajaxify($result);
        } else {
                return $result;
        }
        }

    public function listadoAlumnos($nivel_id = null , $grado_id = 1 , $seccion = 'A'){

           $sql = '
                      select
                        distinct 
                        a.id            "Alumno__id",
                        a.codigo        "Alumno__codigo",
                        tc.razon_social "Alumno__razon_social",
                        tc.email        "Alumno__email",
                        tc.direccion    "Alumno__direccion"
                      from apafa.alumnos a 
                      left join maestros.terceros tc on tc.id = a.id
                      where 
                          a.activo = true 
                      and a.egresado = false    
                      and a.nivel_id = %1$d
                      and a.grado_id = %2$d
                      and a.seccion  = \'%3$s\'
                      order by 
                      a.codigo
                  '; 

           $data = $this->Alumno->query(sprintf($sql,$nivel_id, $grado_id, $seccion));
           $this->reporte_html();
           $nivel = array(1=>'INICIAL','PRIMARIA','SECUNDARIA');
           $this->set(compact('data'));
           $this->set('nivel',$nivel[$nivel_id]);
           $this->set('grado',$grado_id);
           $this->set('seccion',$seccion);

        }
    
}
?>